/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package occho.model;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import occho.data.LogDAO;
import occho.data.OracleDAOFactory;
import occho.data.UsuarioDAO;

/**
 *
 * @author Jorge
 */
public class FachadaAdministrador {
    
    private Usuario admin = null;
    
    /**
     * Constructor de la clase.
     * @param admin
     */
    public FachadaAdministrador(Usuario admin) {
        this.admin = admin;
    }
    
    /**
     * Devuelve una lista de alumnos.
     * @return List<Usuario>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public List<Usuario> seleccionarAlumnos() throws ClassNotFoundException, SQLException {
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        UsuarioDAO usuarioDAO = daoFactory.getUsuarioDAO();
        
        List<Usuario> alumnos = usuarioDAO.seleccionarUsuarios(Usuario.ALUMNO);
        return alumnos;
    }
    
    /**
     * Devuelve una lista de profesores
     * @return List<Usuario>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public List<Usuario> seleccionarProfesores() throws ClassNotFoundException, SQLException {
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        UsuarioDAO usuarioDAO = daoFactory.getUsuarioDAO();
        
        List<Usuario> profesores = usuarioDAO.seleccionarUsuarios(Usuario.PROFESOR);
        return profesores;
    }
    
    /**
     * Elimina un usuario de la base de datos
     * @param usuario
     * @return boolean
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public boolean eliminarUsuario(Usuario usuario) throws ClassNotFoundException, SQLException {
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        UsuarioDAO usuarioDAO = daoFactory.getUsuarioDAO();
        
        boolean eliminado = usuarioDAO.eliminarUsuario(usuario);
        
        return eliminado;
    }
    
    /**
     * Modificar un profesor en la basede datos.
     * @param profesor
     * @return boolean
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public boolean modificarProfesor(Usuario profesor) throws ClassNotFoundException, SQLException {
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        UsuarioDAO usuarioDAO = daoFactory.getUsuarioDAO();
        
        boolean modificado = usuarioDAO.modificarUsuario(profesor);
        
        return modificado;
    }
    
    /**
     * Devuelve una lista de logs
     * @return List<Log>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public List<Log> getListaLogs() throws ClassNotFoundException, SQLException {
        OracleDAOFactory fac = OracleDAOFactory.getInstancia();
        LogDAO lDAO = fac.getLogDAO();
        List<Log> lista = new ArrayList<Log>(lDAO.SeleccionarLogs());
        return lista;
    }
    
    /**
     * Inserta un log
     * @param l
     * @return boolean
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public boolean insertar(Log l) throws SQLException, ClassNotFoundException {
        OracleDAOFactory fac = OracleDAOFactory.getInstancia();
        LogDAO lDAO = fac.getLogDAO();
        if(lDAO.insertarLog(l)){
            return true;
        }
        else{
            return false;
        }  
    }
    
    /**
     * Resetea los logs
     * @return boolean
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public boolean resetLogs() throws SQLException, ClassNotFoundException {
        OracleDAOFactory fac = OracleDAOFactory.getInstancia();
        LogDAO lDAO = fac.getLogDAO();
        if(lDAO.resetLog()){
            return true;
        }
        else{
            return false;
        }  
    }
    
}

